package com.houbank.demo.rabbitmq.utils;

import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;

import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * jackson日期转换工具类
 *
 *
 *
 *@JsonSerialize是转换为字符串，主要是后台传递给前台时的日期格式；
 *  @JsonSerialize(using = JsonDateFormatFull.class)    
       public Date getUpdateDate() {    
           return updateDate;    
       } 
 @JsonDeserialize是转换字符串为日期类型，主要是从前台往后台传递时的日期。
 @JsonDeserialize(using = DateYMDHMSJsonDeserializer.class)    
    public void setUpdateDate(Date updateDate) {    
    this.updateDate = updateDate;    
  }   
 */
public class JsonDateFormatFull extends JsonSerializer<Date> {
    /**
     * Jackson支持日期字符串格式
     * "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
     * "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"
     * "EEE, dd MMM yyyy HH:mm:ss zzz"
     * "yyyy-MM-dd"
     */
    @Override
    public void serialize(Date value, JsonGenerator jgen,SerializerProvider provider)
            throws IOException, JsonProcessingException {
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String formattedDate = formatter.format(value);
        jgen.writeString(formattedDate);
    }
}
